gusucode.com > 阵列信号处理书的源码 > MATALB 程序/9.均匀圆阵下基于UCA-ESPRIT的二维DOA估计的MATLAB程序/main.m

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%     2D-DOA estimation with UCA-ESPRIT for circular array      %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Developed by lingyun xu and xiaofei zhang (南京航空航天大学 电子工程系 张小飞)
% EMAIL:zhangxiaofei@nuaa.edu.cn

clc;
close all;
clear all;
N=16;
M=floor(N/4);
m=-M:1:M;m1=-1:-1:-M;
cv=diag([(j).^(m(1:M+1)),(j).^(m1(1:M))]);
v=[];
for in=1:2*M+1
    v=[v,WW(in-5,N)'];
end
v=4*v;
fe=v*cv';
a1=2*pi*m/(2*M+1);
W1=[];
for in=1:2*M+1
    W1=[W1,VV(a1(in)).'];
end
W1=(1/3)*W1;
Fr=fe*W1;
x=[1,-1,1,-1,1,1,1,1,1];
c0=diag(x);
x2=c0*W1;
%构造信号
snap=500;         %%快拍数
fs=1000;            %%采样频率
t=[0:snap-1]/fs;
M1=16;               %%阵元数
N1=2;                %%目标数
f=30e3;
R=1/(4*sin(pi/M1));
snr=10;
alpha=[10,20];
theta=[15,35];
%%
uu=sin(alpha*pi/180).*exp(j*theta*pi/180);
a1=[0:(M1-1)]';
for ii=1:N1
    rand('state',ii)
    s(ii,:)=exp(j*2*pi*(f*t+0.5*5*2^(ii-1)*t.^2));
end
for in=1:N1
    A11(:,in)=exp(j*2*pi*cos(2*pi*a1/M1-theta(in)*pi/180)*sin(alpha(in)*pi/180));
end


%%%%%%%%%%%%%%%%
S=s;
 X0=A11*S;
  Y=awgn(X0,snr,'measured');
  RR=Y*Y'/snap;
  RRR=Fr'*RR*Fr;
  [EV,D]=eig(real(RRR));
  % 
EVA=diag(D)';
[EVA,I]=sort(EVA);
EVA=fliplr(EVA);
EV=fliplr(EV(:,I));
E=EV(:,1:N1);
C0=[1,-1,1,-1,1,1,1,1,1];
C00=diag(C0);
Z1=C00*W1*E;
Z11=Z1(1:7,:);
Z12=Z1(2:8,:);
Z13=Z1(3:9,:);
E1=[Z11,Z13];
T1=[-3,-2,-1,0,1,2,3];
T=1/pi*diag(T1);
%T11=diag(T1);
%B=inv(E'*E)*E'*T*Z12;
B=pinv(E1)*T*Z12;
B1=B(1:2,:);
[p,w]=eig(B1);
asin(abs(diag(w)))*180/pi
angle(diag(w))*180/pi